#include<bits/stdc++.h>
#define int long long 
using namespace std;
const int maxn=(1<<20)+10;
int dp[maxn][30]; // 表示 选择 i 这个状态下的字符, 并以 字符 j 结尾的最多的字符串数
int n;
int fst[30];
int ed[30];
string arr[30];

void solve(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>arr[i];
		fst[i]=arr[i][0]-'a';
		ed[i]=arr[i][arr[i].size()-1]-'a';
	}
	
	int ans=0;
	for(int i=0;i<(1<<n);i++){
		for(int k=0;k<n;k++){ // 枚举出所有的字符串
			if((i>>k)&1){ // 需要先保证这个字符串被选择了
				dp[i][ed[k]]=max(dp[i][ed[k]], dp[i-(1<<k)][fst[k]]+1);
				ans=max(ans, dp[i][ed[k]]);
			}
		}
	}
	cout<<ans<<'\n';
}


signed main(){
	ios::sync_with_stdio(0), cin.tie(0),cout.tie(0);
	solve();
	return 0;
}
